﻿#define _CRT_SECURE_NO_WARNINGS
/*给你两个整数 left 和 right ，在闭区间 [left, right] 范围内，统计并返回 计算置位位数为质数 的整数个数。

计算置位位数 就是二进制表示中 1 的个数。

来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/prime-number-of-set-bits-in-binary-representation
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。*/
#include<stdio.h>
int one_of_bit(int left)
{
	int count = 0;
	while (left)
	{
		left = left & (left - 1);
		count++;
	}
	return count;
}
int countPrimeSetBits(int left,int right)
{
	int arr[] = { 2,3,5,7,11,13,17,19,23,29,31 };
	int len = sizeof(arr) / sizeof(arr[0]);
	int sum = 0;
	while (left < right)
	{
		int count = one_of_bit(left);
		for (int i = 0; i < len; i++)
		{
			if (arr[i] == count)
			{
				sum++;
				break;
			}
		}
		left++;
	}
	return sum;
}